// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package com.google.zxing.oned;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.ChecksumException;
import com.google.zxing.FormatException;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.ResultPoint;
import com.google.zxing.common.BitArray;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
// Referenced classes of package com.google.zxing.oned:
// OneDReader
public final class Code128Reader extends OneDReader
{
static final int a[][] = {
{
2, 1, 2, 2, 2, 2
}, {
2, 2, 2, 1, 2, 2
}, {
2, 2, 2, 2, 2, 1
}, {
1, 2, 1, 2, 2, 3
}, {
1, 2, 1, 3, 2, 2
}, {
1, 3, 1, 2, 2, 2
}, {
1, 2, 2, 2, 1, 3
}, {
1, 2, 2, 3, 1, 2
}, {
1, 3, 2, 2, 1, 2
}, {
2, 2, 1, 2, 1, 3
}, {
2, 2, 1, 3, 1, 2
}, {
2, 3, 1, 2, 1, 2
}, {
1, 1, 2, 2, 3, 2
}, {
1, 2, 2, 1, 3, 2
}, {
1, 2, 2, 2, 3, 1
}, {
1, 1, 3, 2, 2, 2
}, {
1, 2, 3, 1, 2, 2
}, {
1, 2, 3, 2, 2, 1
}, {
2, 2, 3, 2, 1, 1
}, {
2, 2, 1, 1, 3, 2
}, {
2, 2, 1, 2, 3, 1
}, {
2, 1, 3, 2, 1, 2
}, {
2, 2, 3, 1, 1, 2
}, {
3, 1, 2, 1, 3, 1
}, {
3, 1, 1, 2, 2, 2
}, {
3, 2, 1, 1, 2, 2
}, {
3, 2, 1, 2, 2, 1
}, {
3, 1, 2, 2, 1, 2
}, {
3, 2, 2, 1, 1, 2
}, {
3, 2, 2, 2, 1, 1
}, {
2, 1, 2, 1, 2, 3
}, {
2, 1, 2, 3, 2, 1
}, {
2, 3, 2, 1, 2, 1
}, {
1, 1, 1, 3, 2, 3
}, {
1, 3, 1, 1, 2, 3
}, {
1, 3, 1, 3, 2, 1
}, {
1, 1, 2, 3, 1, 3
}, {
1, 3, 2, 1, 1, 3
}, {
1, 3, 2, 3, 1, 1
}, {
2, 1, 1, 3, 1, 3
}, {
2, 3, 1, 1, 1, 3
}, {
2, 3, 1, 3, 1, 1
}, {
1, 1, 2, 1, 3, 3
}, {
1, 1, 2, 3, 3, 1
}, {
1, 3, 2, 1, 3, 1
}, {
1, 1, 3, 1, 2, 3
}, {
1, 1, 3, 3, 2, 1
}, {
1, 3, 3, 1, 2, 1
}, {
3, 1, 3, 1, 2, 1
}, {
2, 1, 1, 3, 3, 1
}, {
2, 3, 1, 1, 3, 1
}, {
2, 1, 3, 1, 1, 3
}, {
2, 1, 3, 3, 1, 1
}, {
2, 1, 3, 1, 3, 1
}, {
3, 1, 1, 1, 2, 3
}, {
3, 1, 1, 3, 2, 1
}, {
3, 3, 1, 1, 2, 1
}, {
3, 1, 2, 1, 1, 3
}, {
3, 1, 2, 3, 1, 1
}, {
3, 3, 2, 1, 1, 1
}, {
3, 1, 4, 1, 1, 1
}, {
2, 2, 1, 4, 1, 1
}, {
4, 3, 1, 1, 1, 1
}, {
1, 1, 1, 2, 2, 4
}, {
1, 1, 1, 4, 2, 2
}, {
1, 2, 1, 1, 2, 4
}, {
1, 2, 1, 4, 2, 1
}, {
1, 4, 1, 1, 2, 2
}, {
1, 4, 1, 2, 2, 1
}, {
1, 1, 2, 2, 1, 4
}, {
1, 1, 2, 4, 1, 2
}, {
1, 2, 2, 1, 1, 4
}, {
1, 2, 2, 4, 1, 1
}, {
1, 4, 2, 1, 1, 2
}, {
1, 4, 2, 2, 1, 1
}, {
2, 4, 1, 2, 1, 1
}, {
2, 2, 1, 1, 1, 4
}, {
4, 1, 3, 1, 1, 1
}, {
2, 4, 1, 1, 1, 2
}, {
1, 3, 4, 1, 1, 1
}, {
1, 1, 1, 2, 4, 2
}, {
1, 2, 1, 1, 4, 2
}, {
1, 2, 1, 2, 4, 1
}, {
1, 1, 4, 2, 1, 2
}, {
1, 2, 4, 1, 1, 2
}, {
1, 2, 4, 2, 1, 1
}, {
4, 1, 1, 2, 1, 2
}, {
4, 2, 1, 1, 1, 2
}, {
4, 2, 1, 2, 1, 1
}, {
2, 1, 2, 1, 4, 1
}, {
2, 1, 4, 1, 2, 1
}, {
4, 1, 2, 1, 2, 1
}, {
1, 1, 1, 1, 4, 3
}, {
1, 1, 1, 3, 4, 1
}, {
1, 3, 1, 1, 4, 1
}, {
1, 1, 4, 1, 1, 3
}, {
1, 1, 4, 3, 1, 1
}, {
4, 1, 1, 1, 1, 3
}, {
4, 1, 1, 3, 1, 1
}, {
1, 1, 3, 1, 4, 1
}, {
1, 1, 4, 1, 3, 1
}, {
3, 1, 1, 1, 4, 1
}, {
4, 1, 1, 1, 3, 1
}, {
2, 1, 1, 4, 1, 2
}, {
2, 1, 1, 2, 1, 4
}, {
2, 1, 1, 2, 3, 2
}, {
2, 3, 3, 1, 1, 1, 2
}
};
private static final int b = 64;
private static final int c = 179;
private static final int d = 98;
private static final int e = 99;
private static final int f = 100;
private static final int g = 101;
private static final int h = 102;
private static final int i = 97;
private static final int j = 96;
private static final int k = 101;
private static final int l = 100;
private static final int m = 103;
private static final int n = 104;
private static final int o = 105;
private static final int p = 106;
public Code128Reader()
{
}
private static int a(BitArray bitarray, int ai[], int i1)
{
recordPattern(bitarray, i1, ai);
int j1 = 64;
int k1 = -1;
for (int l1 = 0; l1 < a.length; l1++)
{
int i2 = patternMatchVariance(ai, a[l1], 179);
if (i2 < j1)
{
k1 = l1;
j1 = i2;
}
}
if (k1 >= 0)
{
return k1;
} else
{
throw NotFoundException.getNotFoundInstance();
}
}
private static int[] a(BitArray bitarray)
{
int i1 = bitarray.getSize();
int j1 = bitarray.getNextSet(0);
int ai[] = new int[6];
int k1 = ai.length;
int l1 = j1;
boolean flag = false;
int i2 = j1;
int j2 = 0;
while (l1 < i1)
{
int k2;
boolean flag1;
if (flag ^ bitarray.get(l1))
{
ai[j2] = 1 + ai[j2];
flag1 = flag;
k2 = j2;
} else
{
if (j2 == k1 - 1)
{
int i3 = 64;
int j3 = -1;
int k3 = 103;
while (k3 <= 105)
{
int l3 = patternMatchVariance(ai, a[k3], 179);
int l2;
if (l3 < i3)
{
j3 = k3;
} else
{
l3 = i3;
}
k3++;
i3 = l3;
}
if (j3 >= 0 && bitarray.isRange(Math.max(0, i2 - (l1 - i2) / 2), i2, false))
{
return (new int[] {
i2, l1, j3
});
}
l2 = i2 + (ai[0] + ai[1]);
System.arraycopy(ai, 2, ai, 0, k1 - 2);
ai[k1 - 2] = 0;
ai[k1 - 1] = 0;
k2 = j2 - 1;
} else
{
k2 = j2 + 1;
l2 = i2;
}
ai[k2] = 1;
if (!flag)
{
flag1 = true;
} else
{
flag1 = false;
}
i2 = l2;
}
l1++;
flag = flag1;
j2 = k2;
}
throw NotFoundException.getNotFoundInstance();
}
public Result decodeRow(int i1, BitArray bitarray, Map map)
{
int ai[];
int j1;
ai = a(bitarray);
j1 = ai[2];
j1;
JVM INSTR tableswitch 103 105: default 40
// 103 44
// 104 212
// 105 219;
goto _L1 _L2 _L3 _L4
_L1:
throw FormatException.getFormatInstance();
_L2:
byte byte0 = 101;
_L39:
StringBuilder stringbuilder;
ArrayList arraylist;
int l1;
int ai1[];
boolean flag;
boolean flag1;
int i2;
byte byte1;
int j2;
int k2;
int l2;
int i3;
boolean flag2;
stringbuilder = new StringBuilder(20);
arraylist = new ArrayList(20);
int k1 = ai[0];
l1 = ai[1];
ai1 = new int[6];
flag = true;
flag1 = false;
i2 = k1;
byte1 = byte0;
j2 = 0;
k2 = j1;
l2 = 0;
i3 = 0;
flag2 = false;
_L14:
if (flag2) goto _L6; else goto _L5
_L5:
int j4;
int i5;
j4 = a(bitarray, ai1, l1);
arraylist.add(Byte.valueOf((byte)j4));
if (j4 != 106)
{
flag = true;
}
if (j4 != 106)
{
j2++;
k2 += j2 * j4;
}
int k4 = ai1.length;
int l4 = 0;
i5 = l1;
for (; l4 < k4; l4++)
{
i5 += ai1[l4];
}
goto _L7
_L3:
byte0 = 100;
continue; /* Loop/switch isn't completed */
_L4:
byte0 = 99;
continue; /* Loop/switch isn't completed */
_L7:
j4;
JVM INSTR tableswitch 103 105: default 256
// 103 358
// 104 358
// 105 358;
goto _L8 _L9 _L9 _L9
_L8:
byte1;
JVM INSTR tableswitch 99 101: default 284
// 99 762
// 100 582
// 101 362;
goto _L10 _L11 _L12 _L13
_L10:
boolean flag4;
boolean flag5;
byte byte2;
boolean flag6;
boolean flag11 = flag;
flag4 = flag2;
flag5 = flag11;
byte2 = byte1;
flag6 = false;
_L17:
boolean flag3;
boolean flag7;
boolean flag8;
boolean flag9;
boolean flag10;
boolean flag12;
boolean flag13;
boolean flag14;
boolean flag15;
boolean flag16;
boolean flag17;
boolean flag18;
boolean flag19;
boolean flag20;
boolean flag21;
if (flag1)
{
if (byte2 == 101)
{
byte2 = 100;
} else
{
byte2 = 101;
}
}
i2 = l1;
flag1 = flag6;
l1 = i5;
byte1 = byte2;
l2 = i3;
i3 = j4;
flag7 = flag4;
flag = flag5;
flag2 = flag7;
goto _L14
_L9:
throw FormatException.getFormatInstance();
_L13:
if (j4 >= 64) goto _L16; else goto _L15
_L15:
stringbuilder.append((char)(j4 + 32));
flag21 = flag;
flag4 = flag2;
flag5 = flag21;
byte2 = byte1;
flag6 = false;
goto _L17
_L16:
if (j4 >= 96) goto _L19; else goto _L18
_L18:
stringbuilder.append((char)(j4 - 64));
flag20 = flag;
flag4 = flag2;
flag5 = flag20;
byte2 = byte1;
flag6 = false;
goto _L17
_L19:
if (j4 != 106)
{
flag = false;
}
flag17 = false;
j4;
JVM INSTR tableswitch 96 106: default 516
// 96 516
// 97 516
// 98 543
// 99 563
// 100 553
// 101 516
// 102 516
// 103 516
// 104 516
// 105 516
// 106 573;
goto _L20 _L20 _L20 _L21 _L22 _L23 _L20 _L20 _L20 _L20 _L20 _L24
_L20:
flag18 = flag;
flag4 = flag2;
flag5 = flag18;
flag19 = flag17;
byte2 = byte1;
flag6 = flag19;
goto _L17
_L21:
flag17 = true;
byte1 = 100;
goto _L20
_L23:
byte1 = 100;
flag17 = false;
goto _L20
_L22:
byte1 = 99;
flag17 = false;
goto _L20
_L24:
flag2 = true;
flag17 = false;
goto _L20
_L12:
if (j4 >= 96) goto _L26; else goto _L25
_L25:
stringbuilder.append((char)(j4 + 32));
flag16 = flag;
flag4 = flag2;
flag5 = flag16;
byte2 = byte1;
flag6 = false;
goto _L17
_L26:
if (j4 != 106)
{
flag = false;
}
flag13 = false;
j4;
JVM INSTR tableswitch 96 106: default 696
// 96 696
// 97 696
// 98 723
// 99 743
// 100 696
// 101 733
// 102 696
// 103 696
// 104 696
// 105 696
// 106 753;
goto _L27 _L27 _L27 _L28 _L29 _L27 _L30 _L27 _L27 _L27 _L27 _L31
_L27:
flag14 = flag;
flag4 = flag2;
flag5 = flag14;
flag15 = flag13;
byte2 = byte1;
flag6 = flag15;
goto _L17
_L28:
flag13 = true;
byte1 = 101;
goto _L27
_L30:
byte1 = 101;
flag13 = false;
goto _L27
_L29:
byte1 = 99;
flag13 = false;
goto _L27
_L31:
flag2 = true;
flag13 = false;
goto _L27
_L11:
if (j4 >= 100) goto _L33; else goto _L32
_L32:
if (j4 < 10)
{
stringbuilder.append('0');
}
stringbuilder.append(j4);
flag12 = flag;
flag4 = flag2;
flag5 = flag12;
byte2 = byte1;
flag6 = false;
goto _L17
_L33:
if (j4 != 106)
{
flag = false;
}
j4;
JVM INSTR tableswitch 100 106: default 868
// 100 871
// 101 915
// 102 893
// 103 868
// 104 868
// 105 868
// 106 937;
goto _L10 _L34 _L35 _L36 _L10 _L10 _L10 _L37
_L34:
flag10 = flag;
flag4 = flag2;
flag5 = flag10;
byte2 = 100;
flag6 = false;
goto _L17
_L36:
flag9 = flag;
flag4 = flag2;
flag5 = flag9;
byte2 = byte1;
flag6 = false;
goto _L17
_L35:
flag8 = flag;
flag4 = flag2;
flag5 = flag8;
byte2 = 101;
flag6 = false;
goto _L17
_L37:
flag3 = flag;
flag4 = true;
flag5 = flag3;
byte2 = byte1;
flag6 = false;
goto _L17
_L6:
int j3 = bitarray.getNextUnset(l1);
if (!bitarray.isRange(j3, Math.min(bitarray.getSize(), j3 + (j3 - i2) / 2), false))
{
throw NotFoundException.getNotFoundInstance();
}
if ((k2 - j2 * l2) % 103 != l2)
{
throw ChecksumException.getChecksumInstance();
}
int k3 = stringbuilder.length();
if (k3 == 0)
{
throw NotFoundException.getNotFoundInstance();
}
float f1;
float f2;
int l3;
byte abyte0[];
if (k3 > 0 && flag)
{
if (byte1 == 99)
{
stringbuilder.delete(k3 - 2, k3);
} else
{
stringbuilder.delete(k3 - 1, k3);
}
}
f1 = (float)(ai[1] + ai[0]) / 2.0F;
f2 = (float)(j3 + i2) / 2.0F;
l3 = arraylist.size();
abyte0 = new byte[l3];
for (int i4 = 0; i4 < l3; i4++)
{
abyte0[i4] = ((Byte)arraylist.get(i4)).byteValue();
}
String s = stringbuilder.toString();
ResultPoint aresultpoint[] = new ResultPoint[2];
aresultpoint[0] = new ResultPoint(f1, i1);
aresultpoint[1] = new ResultPoint(f2, i1);
return new Result(s, abyte0, aresultpoint, BarcodeFormat.CODE_128);
if (true) goto _L39; else goto _L38
_L38:
}
}